#ifndef ICOMMAND_H_HEADER_INCLUDED_B4F2C1F4
#define ICOMMAND_H_HEADER_INCLUDED_B4F2C1F4

#include <wx/cmdproc.h> 
#include <stdlib.h>
#include "../definition.h"

//##ModelId=4B023E4801E4
class ICommand: public wxCommand
{
protected:

public:
    //##ModelId=4B0C0C710186
    ICommand(){};

    virtual bool Do() = 0;
    virtual bool Undo() = 0;
    virtual bool CanUndo() = 0;

    STRING GetName() 
    {
        throw std::logic_error("This function should be override "
            "by subclass, and should not be called at all.");        
        return EMPTY_STRING;
    }
};



#endif /* ICOMMAND_H_HEADER_INCLUDED_B4F2C1F4 */
